DeleteByIdListenerCollection.java
package org.codefilarete.stalactite.engine.listener;
import java.util.ArrayList;
import java.util.List;
/**
* @author Guillaume Mary
*/
public class DeleteByIdListenerCollection<C> implements DeleteByIdListener<C> {
private final List<DeleteByIdListener<C>> deleteByIdListeners = new ArrayList<>();
@Override
public void beforeDeleteById(Iterable<? extends C> entities) {
deleteByIdListeners.forEach(listener -> listener.beforeDeleteById(entities));
}
@Override
public void afterDeleteById(Iterable<? extends C> entities) {
deleteByIdListeners.forEach(listener -> listener.afterDeleteById(entities));
}
@Override
public void onDeleteError(Iterable<? extends C> entities, RuntimeException runtimeException) {
deleteByIdListeners.forEach(listener -> listener.onDeleteError(entities, runtimeException));
}
public void add(DeleteByIdListener<? extends C> deleteByIdListener) {
this.deleteByIdListeners.add((DeleteByIdListener<C>) deleteByIdListener);
}
/**
* Move internal listeners to given instance.
* Useful to aggregate listeners into a single instance.
* Please note that as this method is named "move" it means that listeners of current instance will be cleared.
*
* @param deleteByIdListener the target listener on which the one of current instance must be moved to.
*/
public void moveTo(DeleteByIdListenerCollection<C> deleteByIdListener) {
deleteByIdListener.deleteByIdListeners.addAll(this.deleteByIdListeners);
this.deleteByIdListeners.clear();
}
}